def func():
    n = 100
    list1 = [1, 4, 6, 2]

    """
        1. 内部函数可以访问外部函数的变量
        2. 内部函数可以修改外部函數的可变变量
        3. 内部函数如果修改外部函数的不可变变量 需要加nonlocal关键字修饰
        4. 内部函数修改全局不可变变量，需要在内部函数中声明global 变量名
        5. locals() 查看本地变量有哪些，以字典的形式输出
        6. globals() 查看全局变量有哪些，以字典的形式输出（里面会有些系统的变量）
    """
    def inner_func():
        for index, i in enumerate(list1):
            list1[index] = i + 5
        nonlocal n
        n = n + 20
        list1.sort(reverse=True)
    # 调用内部函数
    inner_func()
    print(list1)
    print(n)

func()
